
import axios from "axios";
import {Message} from 'element-ui';
import router from "@/router"
import NProgress  from "nprogress";
import "nprogress/nprogress.css"

import { isUserTempId,readToken } from "@/utils/auth";


// 二次封装axios

let instance = axios.create({
    baseURL:"/sph",   // 默认域名
    timeout:5000   // 请求的超时时间
})

//请求拦截器
instance.interceptors.request.use((config)=>{
    //请求配置项
    // console.log(config);

    //向请求头 添加 token  真正身份标识
    config.headers.token = readToken();

    //向请求头 添加 userTempId  临时身份
    config.headers.userTempId = isUserTempId();

    // 展示进度条
    NProgress.start();

    // 必须返回 config
    return config;
})


//响应拦截器
instance.interceptors.response.use(
    (response)=>{
         // 关闭进度条
        NProgress.done();

        switch(response.data.code){
            case 200 :
                return response.data.data;
            case 201:
                return "响应拦截器提示：参数错误！";
            case 208:
                // 提示
                Message.error("未登录，请先登录！");
                // 跳转
                router.push("/login")

                // 返回 一个 失败状态的promise
                return Promise.reject();
            default:
                  //必须返回 response  完整的响应体
                  return response.data;
        }
      
    },
    (error)=>{
        
        // 关闭进度条
        NProgress.done();

        // 统一输出错误信息
        console.log("响应拦截器---- 请求失败！！！");

        // 1. 返回一个失败状态的Promise
        // return Promise.reject();

        // 2. 返回一个pending 状态的Promise,中断Promise链
        return new Promise(()=>{});

    }
)


//暴露
export default instance;